ICommand Interface এবং Custom Command তৈরি করা

Microsoft Technologies - এমভিভিএম (MVVM) Command Binding এবং Event Handling |
195
195

MVVM প্যাটার্নে Command একটি গুরুত্বপূর্ণ উপাদান, যা View থেকে ViewModel-এ ইউজারের অ্যাকশন (যেমন বাটন ক্লিক) প্রেরণ করে। ICommand ইন্টারফেস Command প্যাটার্নের একটি মূল অংশ, যা ViewModel-এ কমান্ডের জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস প্রদান করে।

ICommand ইন্টারফেসের মাধ্যমে, আপনি কমান্ডের কাজ, কার্যকারিতা এবং শর্তাবলী নির্ধারণ করতে পারেন। এখানে ICommand ইন্টারফেস এবং Custom Command তৈরি করার বিস্তারিত প্রক্রিয়া দেয়া হল।


ICommand Interface

ICommand ইন্টারফেস একটি স্ট্যান্ডার্ড ইন্টারফেস যা কমান্ডের কার্যকারিতা পরিচালনা করতে ব্যবহৃত হয়। এটি সাধারণত দুইটি মেথড এবং একটি প্রপার্টি ধারণ করে:

  1. Execute(): এই মেথডটি কমান্ডটি কার্যকর করতে ব্যবহৃত হয়।
  2. CanExecute(): এই মেথডটি নির্ধারণ করে যে কমান্ডটি এখন কার্যকর করা যাবে কিনা। এটি সাধারণত একটি বুলিয়ান রিটার্ন করে (যেমন true অথবা false)।
  3. CanExecuteChanged: এটি একটি ইভেন্ট যা কমান্ডের কার্যকারিতা পরিবর্তিত হলে উত্থাপিত হয় (যদি CanExecute() এর শর্ত পরিবর্তিত হয়)।

ICommand Interface এর সিগনেচার:

public interface ICommand
{
    void Execute(object parameter);
    bool CanExecute(object parameter);
    event EventHandler CanExecuteChanged;
}

Custom Command তৈরি করা

Custom Command তৈরি করার জন্য আপনাকে ICommand ইন্টারফেস বাস্তবায়ন (implement) করতে হবে এবং এতে থাকা মেথডগুলির কার্যকারিতা প্রদান করতে হবে। সাধারণত, এটি একটি ক্লাস হিসেবে তৈরি করা হয় যা একটি নির্দিষ্ট কাজ (যেমন বাটনে ক্লিক) সম্পাদন করে।

Custom Command তৈরি করার স্টেপস:

  1. Custom Command ক্লাস তৈরি করা:
    • ICommand ইন্টারফেসটি বাস্তবায়ন করুন এবং এতে Execute(), CanExecute(), এবং CanExecuteChanged ইভেন্টগুলি ডিফাইন করুন।
  2. Execute() মেথড: এটি সেই কোড ধারণ করবে যা কমান্ডটি চালানোর সময় কার্যকর হবে।
  3. CanExecute() মেথড: এটি ফিল্টার করবে যে কমান্ডটি এখন চালানো যাবে কিনা।

Custom Command এর উদাহরণ:

ধরা যাক, আমাদের একটি SubmitCommand তৈরি করতে হবে, যা একটি বাটনে ক্লিক করলে একটি নির্দিষ্ট কাজ করবে (যেমন ফর্ম সাবমিট করা)।

using System;
using System.Windows.Input;

public class SubmitCommand : ICommand
{
    private readonly Action _execute;
    private readonly Func<bool> _canExecute;

    // কনস্ট্রাক্টর যা Execute এবং CanExecute এর জন্য ফাংশন নেবে
    public SubmitCommand(Action execute, Func<bool> canExecute = null)
    {
        _execute = execute ?? throw new ArgumentNullException(nameof(execute));
        _canExecute = canExecute;
    }

    // Execute মেথড যা কমান্ডটি কার্যকর করবে
    public void Execute(object parameter)
    {
        _execute.Invoke();
    }

    // CanExecute মেথড যা নির্ধারণ করবে কমান্ডটি চালানো যাবে কিনা
    public bool CanExecute(object parameter)
    {
        return _canExecute == null || _canExecute();
    }

    // CanExecuteChanged ইভেন্ট যা যখন কমান্ডের অ্যাবিলিটি পরিবর্তিত হবে তখন ট্রিগার করবে
    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }
}

SubmitCommand ব্যাখ্যা:

  1. Action: Action হল একটি ডেলিগেট, যা কোনো কাজ বা মেথড নির্দেশ করে। এটি Execute() মেথডে নির্দিষ্ট কাজটি সম্পাদন করবে।
  2. Func: এটি CanExecute() মেথডের জন্য একটি ফাংশন, যা true বা false রিটার্ন করে বলে দেয় যে কমান্ডটি চালানো যাবে কিনা।
  3. CanExecuteChanged: এটি CanExecute() মেথডের শর্ত পরিবর্তিত হলে CommandManager.RequerySuggested ইভেন্টের মাধ্যমে টেক্সট বা UI রিফ্রেশ করে।

ViewModel এ Custom Command ব্যবহার

এখন, ViewModel-এ SubmitCommand ব্যবহার করা যাবে। আমরা SubmitCommand কে একটি প্রপার্টি হিসেবে তৈরি করব এবং View-এ Data Binding এর মাধ্যমে এটি ব্যবহার করব।

ViewModel-এ Command ব্যবহার:

public class MyViewModel
{
    public ICommand SubmitCommand { get; set; }

    public MyViewModel()
    {
        // Command তৈরি করা, যেখানে Execute এবং CanExecute ফাংশন পাস করা হচ্ছে
        SubmitCommand = new SubmitCommand(OnSubmit, CanSubmit);
    }

    // Execute মেথডের জন্য কাজ
    private void OnSubmit()
    {
        // ফর্ম সাবমিট করার জন্য কাজ
        Console.WriteLine("Form Submitted");
    }

    // CanExecute মেথডের জন্য শর্ত
    private bool CanSubmit()
    {
        // সাবমিট শর্ত (যেমন, ফর্ম ফিল্ডগুলো পূর্ণ হলে সাবমিট করা যাবে)
        return true; // যেকোনো শর্ত এখানে নির্ধারণ করতে পারেন
    }
}

View-এ Command Binding:

এখন, XAML বা UI-এ SubmitCommand-কে বাইন্ড করা হবে।

<Button Content="Submit" Command="{Binding SubmitCommand}" />

এখানে Button-এর Command প্রপার্টি ViewModel-এর SubmitCommand-এর সাথে বাইন্ড করা হয়েছে। অর্থাৎ, বাটন ক্লিক করলে OnSubmit() মেথডটি ট্রিগার হবে এবং কাজটি সম্পাদিত হবে।


Command ব্যবহার করার সুবিধা:

  1. View এবং ViewModel এর মধ্যে আলাদা রাখা: View থেকে ViewModel-এ ইনপুট এবং অ্যাকশন প্রেরণ করার জন্য Command প্যাটার্ন ব্যবহার করা হয়, যা UI এবং বিজনেস লজিককে আলাদা রাখে।
  2. Reusable Commands: একই কমান্ডকে বিভিন্ন UI উপাদানে ব্যবহার করা যায়, যেমন একাধিক বাটনে একই কমান্ড প্রয়োগ করা।
  3. Testability: কমান্ড ক্লাসগুলো সহজে ইউনিট টেস্ট করা যায়, কারণ এটি বিজনেস লজিককে UI থেকে আলাদা করে।
  4. Decoupling: UI ইভেন্টগুলো (যেমন ক্লিক) সরাসরি বিজনেস লজিকের সাথে সংযুক্ত না হয়ে ViewModel এর মাধ্যমে পরিচালিত হয়, যা কোডকে পরিষ্কার এবং মেইনটেনেবল রাখে।

এভাবে, ICommand ইন্টারফেস এবং Custom Command তৈরি করে, আপনি MVVM প্যাটার্নে কমান্ডের কার্যকারিতা নিশ্চিত করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion